package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.util.Collection;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;

import org.hibernate.criterion.Restrictions;

import modelo.Cliente;
import modelo.Compra;
import modelo.Detalle_Cliente_Compra;
import modelo.Detalle_Compra;
import modelo.Empresa;
import modelo.Fresa;
import modelo.Tipo_Compra;

import dao.imp.Base_DatosDAO;

import vista.frmGestionarCompra;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class ControladorGestionarCompra implements ActionListener{

	private frmGestionarCompra formulariocompra;
	private final static String COMPRA_MEDIANERO="C-MED";
	private final static int NUMERO_CLIENTES_COMPRA_PROVEEDOR=1;
	private final static int NUMERO_CLIENTES_COMPRA_MEDIANERO=-1;
	private final static String COMPRA_PROVEEDOR="C-PROV";
	private String tipo_compra_seleccionada;
	private int num_clientes_permitidos;
	private Vector<Detalle_Cliente_Compra> proveedor_medianeros;
	private Vector<Detalle_Compra> detalles_compra;
	
	public ControladorGestionarCompra(){
		super();
		formulariocompra = new frmGestionarCompra();
		this.formulariocompra.setVisible(true);
		this.formulariocompra.setLocationRelativeTo(null);
		this.formulariocompra.AgregarEscuchadores(this);
		proveedor_medianeros = new Vector<Detalle_Cliente_Compra>();
		detalles_compra = new Vector<Detalle_Compra>();
		LimpiarPantalla();
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		String actionCommad = e.getActionCommand();
		if(actionCommad.equals("")){
			Buscar_Cliente();
		}
		else if (actionCommad.equals(" Cancelar")){
			Limpiar_Cliente();
		}
		else if(actionCommad.equals("Agregar")){
			Agregar_Cliente();
		}
		else if(actionCommad.equals("Remover")){
			Remover_Cliente();
		}
		else if(actionCommad.equals("Remover Detalle")){
			try {
				Remover_Detalle();
			} catch (ParseException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}			
		}
		else if(actionCommad.equals("Agregar Detalle")){
			try {
				Agregar_Detalle();
			} catch (ParseException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}
		else if(actionCommad.equals("Guardar")){
			Guardar();
		}
		else if(actionCommad.equals("Cancelar")){
			LimpiarPantalla();
		}
		else if(actionCommad.equals("comboBoxChanged")){
			Cambiar_Numero_Clientes_Permitidos(this.tipo_compra_seleccionada);
		}
		else if (actionCommad.equals("Cargar Fresa")){
			Cargar_Fresa();
		}
	}

	private void Cargar_Fresa() {
		if (formulariocompra.getTbfresa().getTabla().getSelectedRowCount()>1){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe seleccionar solo una Fresa", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
		}else if (formulariocompra.getTbfresa().getTabla().getSelectedRowCount()==0){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe seleccionar una Fresa", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
		}else{
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			String codigo = (String) formulariocompra.getTbfresa().getModelotabla().getValueAt(formulariocompra.getTbfresa().getTabla().getSelectedRow(), 0);
			Fresa fresa = empresa.Buscar_Fresa(codigo);
			if (fresa!=null){
				boolean encontrado = false;
				for (int i=0;i<detalles_compra.size();i++){
					if (fresa.getCodigo().equals(detalles_compra.get(i).getFresa().getCodigo())){
						encontrado = true;i=detalles_compra.size();
					}
				}
				if (!encontrado){
					Mostrar_Datos_Fresa(fresa);
				}else{
					formulariocompra.getMensaje().showMessageDialog(formulariocompra, "No puede agregar nuevamente esta fresa como Detalle", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
				}
			}else{
				formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Fresa no encontrada", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
			}
		}
	}
	
	private void Mostrar_Datos_Fresa(Fresa fresa){
		formulariocompra.getLblfresa().setText(fresa.getNombre());
		formulariocompra.getBtagregar().setEnabled(true);
		formulariocompra.getBtremoverfresa().setEnabled(false);
		formulariocompra.getTxtcantidad().setEnabled(true);
		formulariocompra.getTxtkilos().setEnabled(true);
		formulariocompra.getTxtprecio().setEnabled(true);
		formulariocompra.getTxtpreciokilo().setEnabled(true);
	}
	
	private void Cambiar_Numero_Clientes_Permitidos(String item_anterior) {
		if (formulariocompra.getCmbtipocompra().getItemCount()>0){
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			Tipo_Compra tipo = empresa.Buscar_Tipo(formulariocompra.getCmbtipocompra().getSelectedItem().toString());
			if (tipo!=null){
				if (tipo.getCodigo().equals(this.COMPRA_PROVEEDOR)){
					if (this.NUMERO_CLIENTES_COMPRA_PROVEEDOR>=formulariocompra.getTbcantmedianeros().getTabla().getRowCount() || this.NUMERO_CLIENTES_COMPRA_PROVEEDOR==-1){
						this.num_clientes_permitidos=this.NUMERO_CLIENTES_COMPRA_PROVEEDOR;
						this.tipo_compra_seleccionada=tipo.getDescripcion();
					}else{
						formulariocompra.getMensaje().showMessageDialog(formulariocompra, "El numero de clientes permitidos para este tipo de compra excede el maximo, Deber remover clientes", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
						formulariocompra.getCmbtipocompra().setSelectedItem(item_anterior);
					}
				}else if (tipo.getCodigo().equals(this.COMPRA_MEDIANERO)){
					if (this.NUMERO_CLIENTES_COMPRA_MEDIANERO>=formulariocompra.getTbcantmedianeros().getTabla().getRowCount() || this.NUMERO_CLIENTES_COMPRA_MEDIANERO==-1){
						this.num_clientes_permitidos=this.NUMERO_CLIENTES_COMPRA_MEDIANERO;
						this.tipo_compra_seleccionada=tipo.getDescripcion();
					}else{
						formulariocompra.getMensaje().showMessageDialog(formulariocompra, "El numero de clientes permitidos para este tipo de compra excede el maximo, Deber remover clientes", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
						formulariocompra.getCmbtipocompra().setSelectedItem(item_anterior);
					}
				}
			}
		}
	}

	private void Buscar_Cliente() {
		if (formulariocompra.getTxtidentificacion().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe indicar el numero de la identificacion del cliente", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
		}else{
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			Cliente cliente = empresa.Buscar_Cliente(formulariocompra.getCmbidentificacion().getSelectedItem()+formulariocompra.getTxtidentificacion().getText());
			if (cliente!=null){
				if (cliente.getEstatus()=='a'){
					Mostrar_Datos_Cliente(cliente);
				}else if (cliente.getEstatus()=='e'){
					if (formulariocompra.getMensaje().showConfirmDialog(formulariocompra, "El cliente se encuentra Inactivo. �Desea Reactivarlo?", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().YES_NO_OPTION)==formulariocompra.getMensaje().YES_OPTION){
						empresa.Reactivar_Cliente(cliente);
						Mostrar_Datos_Cliente(cliente);
					}else{
						Limpiar_Cliente();
					}
				}
			}else{
				formulariocompra.getMensaje().showMessageDialog(formulariocompra, "El Cliente no se Encuentra Registrado, debe Registralo antes!", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
			}
		}
	}

	private void Limpiar_Cliente() {
		formulariocompra.getCmbidentificacion().setSelectedItem("V-");
		formulariocompra.getTxtidentificacion().setText("");
		formulariocompra.getLblapellido2().setText("");
		formulariocompra.getLblnombre2().setText("");
		formulariocompra.getTxtidentificacion().setEnabled(true);
		formulariocompra.getCmbidentificacion().setEnabled(true);
		formulariocompra.getBtbuscar().setEnabled(true);
		formulariocompra.getBtagregarcliente().setEnabled(false);
		formulariocompra.getBtremovercliente().setEnabled(true);
	}

	private void Limpiar_Detalle(){
		formulariocompra.getLblfresa().setText("");
		formulariocompra.getBtagregar().setEnabled(false);
		formulariocompra.getBtremoverfresa().setEnabled(true);
		formulariocompra.getTxtcantidad().setText("");
		formulariocompra.getTxtkilos().setText("");
		formulariocompra.getTxtprecio().setText("");
		formulariocompra.getTxtpreciokilo().setText("");
		formulariocompra.getTxtcantidad().setEnabled(false);
		formulariocompra.getTxtkilos().setEnabled(false);
		formulariocompra.getTxtprecio().setEnabled(false);
		formulariocompra.getTxtpreciokilo().setEnabled(false);
	}
	
	private void Mostrar_Datos_Cliente(Cliente cliente) {
		formulariocompra.getLblapellido2().setText(cliente.getApellido());
		formulariocompra.getLblnombre2().setText(cliente.getNombre());
		formulariocompra.getTxtidentificacion().setEnabled(false);
		formulariocompra.getCmbidentificacion().setEnabled(false);
		formulariocompra.getBtbuscar().setEnabled(false);
		formulariocompra.getBtagregarcliente().setEnabled(true);
		formulariocompra.getBtremovercliente().setEnabled(false);
	}

	private void Agregar_Cliente() {
		boolean encontrado = false;
		String identificacion = formulariocompra.getCmbidentificacion().getSelectedItem()+formulariocompra.getTxtidentificacion().getText();
		for (int i=0;i<proveedor_medianeros.size();i++){
			if (identificacion.equals(proveedor_medianeros.get(i).getCliente().getCedula_rif())){
				encontrado = true;
				i = proveedor_medianeros.size();
			}
		}
		if (encontrado){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "No se puede agregar nuevamente este cliente", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
			Limpiar_Cliente();
		}
		else if ((proveedor_medianeros.size()<this.num_clientes_permitidos) || num_clientes_permitidos==-1){
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			Cliente cliente = empresa.Buscar_Cliente(identificacion);
			Detalle_Cliente_Compra detalle = new Detalle_Cliente_Compra(cliente, Integer.parseInt(formulariocompra.getLblnumerocompra1().getText()));
			proveedor_medianeros.add(detalle);
			String[] nuevafila = {cliente.getCedula_rif(),cliente.getNombre(),cliente.getApellido()};
			formulariocompra.getTbcantmedianeros().AgregarFila(nuevafila);
			Limpiar_Cliente();
		}else{
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "No se pueden agregar mas clientes a la compra, el numero clientes excederia lo permitido", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}

	}

	private void Remover_Cliente() {
		if (formulariocompra.getTbcantmedianeros().getTabla().getSelectedRowCount()>1){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe seleccionar solo un cliente a Remover", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
		}else if (formulariocompra.getTbcantmedianeros().getTabla().getSelectedRowCount()==0){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe seleccionar el cliente a Remover", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().WARNING_MESSAGE);
		}else if (formulariocompra.getMensaje().showConfirmDialog(formulariocompra, "�Esta seguro de remover este cliente?", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().YES_NO_OPTION)==formulariocompra.getMensaje().YES_OPTION){
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			String identificacion = (String) formulariocompra.getTbcantmedianeros().getTabla().getModel().getValueAt(formulariocompra.getTbcantmedianeros().getTabla().getSelectedRow(), 0);
			for (int i=0;i<proveedor_medianeros.size();i++){
				if (identificacion.equals(proveedor_medianeros.get(i).getCliente().getCedula_rif())){
					proveedor_medianeros.remove(i);
					i=proveedor_medianeros.size();
				}
			}
			((DefaultTableModel)formulariocompra.getTbcantmedianeros().getTabla().getModel()).removeRow(formulariocompra.getTbcantmedianeros().getTabla().getSelectedRow());
			//Cliente cliente = empresa.Buscar_Cliente(formulariocompra.getTbcantmedianeros().getTabla().getSelectedRow());
		}
	}

	private void Remover_Detalle() throws ParseException {
		if (formulariocompra.getTbdetallecompra().getTabla().getSelectedRowCount()==0 || formulariocompra.getTbdetallecompra().getTabla().getSelectedRowCount()>1){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe Selecionar UN detalle a remover", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}else if (formulariocompra.getMensaje().showConfirmDialog(formulariocompra, "�Esta seguro de Remover el detalle indicado?", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().YES_NO_OPTION)==formulariocompra.getMensaje().YES_OPTION){
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			String nombre_fresa = (String) formulariocompra.getTbdetallecompra().getTabla().getModel().getValueAt(formulariocompra.getTbdetallecompra().getTabla().getSelectedRow(), 0);
			for (int i=0;i<detalles_compra.size();i++){
				if (nombre_fresa.replace(" ", "").toLowerCase().equals(detalles_compra.get(i).getFresa().getNombre().replace(" ", "").toLowerCase())){
					detalles_compra.remove(i);i=detalles_compra.size();
				}
			}
			((DefaultTableModel)formulariocompra.getTbdetallecompra().getTabla().getModel()).removeRow(formulariocompra.getTbdetallecompra().getTabla().getSelectedRow());
			formulariocompra.getLblmonto().setText(String.valueOf(Total_Compra())+" "+"Bsf");
		}
	}

	private void Agregar_Detalle() throws ParseException {
		if (formulariocompra.getLblfresa().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe indicar la fresa a agregar como detalle de compra", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}else if (formulariocompra.getTxtcantidad().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe indicar la cantidad de cestas que comprara de la fresa", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);	
		}else if (formulariocompra.getTxtkilos().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe indicar la cantidad de kilos que comprara de la fresa", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);	
		}else if (formulariocompra.getTxtprecio().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe indicar el precio por cesta de la fresa indicada", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);	
		}else if (formulariocompra.getTxtpreciokilo().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Debe indicar el precio por kilo de la fresa indicada", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);	
		}else{
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			List<Fresa> fresas = empresa.getFresas();String nombre_fresa = formulariocompra.getLblfresa().getText();
			Fresa fresa = null;
			for (int i=0;i<fresas.size();i++){
				if (nombre_fresa.replace(" ", "").toLowerCase().equals(fresas.get(i).getNombre().replace(" ", "").toLowerCase())){
					fresa = fresas.get(i);
					i=fresas.size();
				}
			}
			if (fresa!=null){
				Detalle_Compra detalle_compra = new Detalle_Compra(Integer.valueOf(formulariocompra.getLblnumerocompra1().getText()), fresa, Integer.valueOf(formulariocompra.getTxtcantidad().getText()), Double.parseDouble(formulariocompra.getTxtkilos().getText()), Double.parseDouble(formulariocompra.getTxtprecio().getText()), Double.parseDouble(formulariocompra.getTxtpreciokilo().getText()));
				detalles_compra.add(detalle_compra);
				String [] detalle_tabla = {detalle_compra.getFresa().getNombre(),String.valueOf(detalle_compra.getCantidad_cestas()),String.valueOf(detalle_compra.getPrecio_cesta()),String.valueOf(detalle_compra.getCantidad_kg()),String.valueOf(detalle_compra.getPrecio_kg()),String.valueOf(detalle_compra.MontoTotalDetalle())};
				formulariocompra.getTbdetallecompra().AgregarFila(detalle_tabla);
				formulariocompra.getLblmonto().setText(String.valueOf(Total_Compra())+" "+"Bsf");
				Limpiar_Detalle();
			}else{
				formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Fresa no encontrada", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
			}
		}
	}

	private double Total_Compra() throws ParseException {
		double total=0;
		for (int i=0;i<detalles_compra.size();i++){
			total+=detalles_compra.get(i).MontoTotalDetalle();
		}
		return total;
	}

	private void Guardar() {
		System.out.println(formulariocompra.getLblfresa().getText());
		if (proveedor_medianeros.size()<1){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "La compra debe tener al menos un cliente asociado", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}else if (detalles_compra.size()<1){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "La compra debe tener al menos un detalle de compra", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}else if (!formulariocompra.getLblapellido2().getText().equals("")){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Hay un posible cliente que aun no se ha asociado a la compra", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}else if (formulariocompra.getBtagregar().isEnabled()){
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Hay un posible detalle de compra que aun no se ha asociado a la compra", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().ERROR_MESSAGE);
		}else if (formulariocompra.getMensaje().showConfirmDialog(formulariocompra, "Esta apunto de Registrar una Compra, �Esta seguro de registarla?", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().YES_NO_OPTION)==formulariocompra.getMensaje().YES_OPTION){
			Base_DatosDAO conexion = new Base_DatosDAO();
			Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
			Compra compra = new Compra(empresa.getRif(), empresa.Generar_Numero_Compra(), new Date(), empresa.Buscar_Tipo((String) formulariocompra.getCmbtipocompra().getSelectedItem()), 'a');
			empresa.Registrar_Compra(compra, detalles_compra, proveedor_medianeros);
			formulariocompra.getMensaje().showMessageDialog(formulariocompra, "Compra Registrada en forma Exitosa!", "SACFRE/Gestionar Compra", formulariocompra.getMensaje().INFORMATION_MESSAGE);
			LimpiarPantalla();
		}
	}

	private void LimpiarPantalla() {
		Base_DatosDAO conexion = new Base_DatosDAO();
		Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class, Restrictions.eq("estatus", 'a')).get(0);
		formulariocompra.getLblnumerocompra1().setText(String.valueOf(empresa.Generar_Numero_Compra()));
		formulariocompra.getLblfecha1().setText(new Date().toString());
		Cargar_Tabla_Fresa();
		Cargar_Combo_TipoCompra();
		formulariocompra.getLblfresa().setText("");
		formulariocompra.getTxtcantidad().setText("");
		formulariocompra.getTxtkilos().setText("");
		formulariocompra.getTxtprecio().setText("");
		formulariocompra.getTxtpreciokilo().setText("");
		formulariocompra.getLblmonto().setText("0 Bsf");
		formulariocompra.getLblnumerocompra().setPreferredSize(new java.awt.Dimension(163, 15));
		formulariocompra.getTbcantmedianeros().LimpiarTabla();
		formulariocompra.getTbdetallecompra().LimpiarTabla();
		proveedor_medianeros.removeAllElements();
		detalles_compra.removeAllElements();
		Limpiar_Detalle();
		Limpiar_Cliente();
	}

	private void Cargar_Combo_TipoCompra() {
		Base_DatosDAO conexion = new Base_DatosDAO();
		Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class,Restrictions.eq("estatus", 'a')).get(0);
		List<Tipo_Compra> tipos = empresa.getTipos_Compra();
		formulariocompra.getCmbtipocompra().removeAllItems();
		for (int i=0;i<tipos.size();i++){
			formulariocompra.getCmbtipocompra().addItem(tipos.get(i).getDescripcion());
		}
		
	}

	private void Cargar_Tabla_Fresa() {
		Base_DatosDAO conexion = new Base_DatosDAO();
		Empresa empresa = (Empresa)conexion.findByProperty(Empresa.class,Restrictions.eq("estatus", 'a')).get(0);
		List<Fresa> fresas = empresa.getFresas();
		formulariocompra.getTbfresa().LimpiarTabla();
		for (int i=0;i<fresas.size();i++){
			String[] nuevafila = {fresas.get(i).getCodigo(), fresas.get(i).getNombre()};
			formulariocompra.getTbfresa().AgregarFila(nuevafila);
		}
	}

}
